package net.biancheng.framework.componet;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @Author: lb
 * @Date: 2021/8/17 8:57
 * <p>
 * 注册拦截器
 * 指定拦截规则
 */
@Slf4j
@Configuration
public class MyConfig implements WebMvcConfigurer {

    //在指定拦截器拦截规则时，调用了两个方法，这两个方法的说明如下：
    //addPathPatterns：该方法用于指定拦截路径，例如拦截路径为“/**”，表示拦截所有请求，包括对静态资源的请求。
    //excludePathPatterns：该方法用于排除拦截路径，即指定不需要被拦截器拦截的请求。
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        log.info("注册拦截器");
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
                .excludePathPatterns("/", "/login", "/index.html", "/hello/login", "/favicon.ico", "/css/**", "/image/**", "/js/**", "/fonts/**");
    }

    //视图映射
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        //当访问 “/” 或 “/index.html” 时，都直接跳转到登陆页面
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/index.html").setViewName("login");
        //添加视图映射 main.html 指向  dashboard.html
        registry.addViewController("/hello.html").setViewName("hello");
    }
}
